package day10;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;

public class RiceFilter {

    /**
     * 通用过滤方法，根据给定条件过滤水稻列表
     * @param rices 水稻列表
     * @param predicate 过滤条件
     * @return 符合条件的水稻列表
     */
    public static List<Rice> filter(List<Rice> rices, Predicate<Rice> predicate) {
        if (rices == null || predicate == null) {
            return new ArrayList<>();
        }

        List<Rice> result = new ArrayList<>();
        for (Rice rice : rices) {
            if (rice != null && predicate.test(rice)) {
                result.add(rice);
            }
        }
        return result;
    }

    /**
     * 通用映射方法，将水稻列表转换为其他类型的列表
     * @param rices 水稻列表
     * @param mapper 映射函数
     * @param <R> 目标类型
     * @return 转换后的列表
     */
    public static <R> List<R> map(List<Rice> rices, Function<Rice, R> mapper) {
        if (rices == null || mapper == null) {
            return new ArrayList<>();
        }

        List<R> result = new ArrayList<>();
        for (Rice rice : rices) {
            if (rice != null) {
                result.add(mapper.apply(rice));
            }
        }
        return result;
    }
}
